package com.code.factory.utils;

public class DBtoJavaUtil {

	/**
	 * 把表字段名格式化为标准的实体属性名
	 * 
	 * @param columnName
	 * @return
	 */
	public static String formatFieldName(String columnName) {
		String fieldName = "";
		String[] names = columnName.split("_");
		for (int i = 0; i < names.length; i++) {
			if (i == 0) {
				fieldName += names[i].toLowerCase();
			} else {
				if (!"".equals(names[i])) {
					// 把首字母大写
					fieldName += names[i].substring(0, 1).toUpperCase()
							+ names[i].substring(1);
				}
			}
		}
		return fieldName;
	}

	/**
	 * 把表字段名格式化为标准的实体getter方法名
	 * 
	 * @param columnName
	 * @return
	 */
	public static String formatGetMethodName(String columnName) {
		return "get" + formatMethodName(columnName);
	}

	/**
	 * 把表字段名格式化为标准的实体setter方法名
	 * 
	 * @param columnName
	 * @return
	 */
	public static String formatSetMethodName(String columnName) {
		return "set" + formatMethodName(columnName);
	}

	private static String formatMethodName(String columnName) {
		String methodName = "";
		String[] names = columnName.split("_");
		for (int i = 0; i < names.length; i++) {
			if (!"".equals(names[i])) {
				// 把首字母大写
				methodName += names[i].substring(0, 1).toUpperCase()
						+ names[i].substring(1);
			}
		}
		return methodName;
	}

	/**
	 * 把数据库类型转为JAVA类型
	 * 
	 * @param columnType
	 * @return
	 */
	public static String toJavaType(String columnType) {
		String javaType = null;
		javaType = Const.DB_TO_JAVA_TYPE_MAPPING.get(columnType.toUpperCase());
		if (javaType == null) {
			javaType = columnType.toLowerCase();
		}
		return javaType;

	}

	public static void main(String[] args) {
		System.out.println(DBtoJavaUtil.formatFieldName("name_type_app"));
		System.out.println(DBtoJavaUtil.formatMethodName("name_type_app"));
	}
}
